import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import router from "@/router/index.js"
import { login as loginApi } from '@/api/index.js'
import {ElMessage} from "element-plus"; // 假设你有登录 API

export const useUserStore = defineStore(
    'user_sys',
    () => {
        const userInfo = ref(null) // 用户信息
        const userDetails = reactive({ // 使用 reactive 定义 userDetails
            userId: null,
            userName: null,
            email: null,
            phone: null,
            status: null,
            avatar: null,
            createTime: null,
            updateTime: null,
            token: null,
        })
        const permissions = ref([]) // 权限列表

        // 登录方法
        const login = async (userData) => {
            try {
                // 调用 API 登录
                const response = await loginApi(userData) // 使用重命名的 API 函数
                console.log('login response:', response)
                if (response.data.code === 200) {
                    userInfo.value = response.data.data.role // 保存用户角色
                    userDetails.userId = response.data.data.userId // 保存用户 ID
                    userDetails.userName = response.data.data.userName // 保存用户名
                    userDetails.email = response.data.data.email // 保存邮箱
                    userDetails.phone = response.data.data.phone // 保存手机号
                    userDetails.status = response.data.data.status // 保存用户状态
                    userDetails.avatar = response.data.data.avatar // 保存用户头像
                    userDetails.createTime = response.data.data.createTime // 保存用户创建时间
                    userDetails.updateTime = response.data.data.updateTime // 保存用户更新时间
                    userDetails.token = response.data.data.token // 保存用户 token
                    // 将权限列表赋值为响应中的权限操作
                    permissions.value = response.data.data.permissions.map(perm => perm.operation)
                    router.push('/home') // 登录成功后跳转到主页
                } else {
                    ElMessage.error(response.data.msg) // 显示错误信息
                }
            } catch (error) {
                console.error('Login error:', error)
            }
        }

        // 登出方法
        const logout = () => {
            userInfo.value = null // 清空用户信息
            permissions.value = [] // 清空权限列表
            console.log("用户信息", userDetails) // 这里不需要 userDetails.value
            Object.keys(userDetails).forEach(key => {
                userDetails[key] = null; // 清空用户数据
            });
            router.push('/') // 跳转到首页
        }

        // 检查权限方法
        const hasPermission = (operation) => {
            // 检查权限列表中是否包含该操作
            return permissions.value.includes(operation)
        }

        return {
            userInfo,
            permissions,
            userDetails, // 需要返回 userDetails
            login,
            logout,
            hasPermission,
        }
    },
    {
        persist: true, // 启用持久化存储
    }
)
